﻿
namespace KinonekoSoftware.CodariaDB.Documents.Notions
{
    /// <summary>
    /// <see cref="NotionDraft"/> 类型表示一个灵感草案。
    /// </summary>
    /// <remarks>
    /// 每一个 <see cref="INotion"/> 接口只允许创建一个灵感。
    /// </remarks>
    public sealed class NotionDraft : FullObject, IDraft, INotion
    {
        private string _name;
        private string _intro;
        
        public string ObjectID { get; init; }

        /// <summary>
        /// 描述符，用于将一些可变的Notion类型转化成不可变的类型。
        /// </summary>
        public DataObjectFormat Format { get; init; }

        /// <summary>
        /// 原始的灵感数据，也就是第一层灵感。
        /// </summary>
        [Obsolete("这个属性将移除")]
        public List<INotion> OriginalSource { get; set; }

        /// <summary>
        /// 除了第一层灵感之外的灵感。
        /// </summary>
        [Obsolete("这个属性将移除")]
        public List<string> Drafts { get; set; }
        
        /// <summary>
        /// 印象。
        /// </summary>
        public List<Impression> Impressions { get; set; }
        
        public List<string> Subjects   { get; set; }
        public List<string> Missions   { get; set; }
        public List<string> StoryPoint { get; set; }
        

        /// <summary>
        /// 获取或设置 <see cref="Intro"/> 属性。
        /// </summary>
        public string Intro
        {
            get => _intro;
            set => SetValue(ref _intro, value);
        }

        /// <summary>
        /// 获取或设置 <see cref="Name"/> 属性。
        /// </summary>
        public string Name
        {
            get => _name;
            set => SetValue(ref _name, value);
        }
    }
}